/**
 * 权限控制（登录状态、用户信息）
 * 登录、退出、检测是否登录、检测账号状态(是否被拉黑)等
 */

/**
 * storage key
 */
const UID_KEY = 'UID'
const TOKEN_KEY = 'TOKEN'

/**
 * 用户id，指示当前登录用户
 */
var UID = null

var STATUS=null // 1 表示注册用户 3表示测试用户
/**
 * 用户token
 */
var TOKEN = null

var Cookie=null
/**
 * 获取用户id
 * @return integer|null
 */
function getUID() {
  return UID
}

/**
 * 设置用户id
 */
function setUID(uid) {
  UID = uid
}
/**
 * 获取用户状态
 * @return integer|null
 */
function getSTATUS() {
  return STATUS
}

/**
 * 设置用户状态
 */
function setSTATUS(status) {
  STATUS = status
}
/**
 * 获取用户token
 * @return integer|null
 */
function getToken() {
  console.log('getToken', TOKEN)

  return TOKEN
}
/**
 * 设置用户cookie
 */
function setCookie(cookie) {
  console.log('cookie', cookie);
  Cookie = cookie;
}

/**
 * 获取用户cookie
 * @return integer|null
 */
function getCookie() {
  return Cookie;
}
/**
 * 设置用户id
 */
function setToken(token) {
  TOKEN = token
}

/**
 * 自动登录
 */
function autoLogin() {
  UID = wx.getStorageSync(UID_KEY)
  TOKEN = wx.getStorageSync(TOKEN_KEY)
  if(UID&&TOKEN){
    return true;
  } else{
    return false;
  }
}

/**
 * 设置登录态，保存用户token与用户信息 与cookie
 */
function login(cookie, userInfo) {
  try {
    wx.setStorageSync(TOKEN_KEY, userInfo.sessionKey)
    wx.setStorageSync(UID_KEY, userInfo.userId)
    setToken(userInfo.sessionKey);
    setSTATUS(userInfo.status);
    setCookie(cookie);
    setUID(userInfo.userId);
    console.log('UID', userInfo.userId,getUID());
    getApp().setUserInfo(userInfo);
    return true
  } catch (e) {
    console.error('设置storage失败: ' + e)
    return false
  }
}

/**
 * 登出
 */
function logout() {
  try {
    wx.clearStorageSync()
    setToken(null)
    setUID(null)
    getApp().setUserInfo(null)
    return true
  } catch (e) {
    console.error('清空storage失败: ' + e)
    return false
  }
}

/**
 * 检测是否登录，弹出登录对话框（可选）
 * 用于需要登录的操作（如图书详情、书单详情等可分享页面中）
 * @param showModal {Boolean}
 * @return {Boolean}
 */
function isLogin(showModal = false,type="page") {
  if (UID && STATUS!=3) {
    return true;
  } else {
    if (showModal) {
      wx.showModal({
        title: '您还未登录',
        content: '登录后才可使用完整功能，是否前去登录？',
        success: res => {
          if (res.confirm) {
            // wx.navigateTo({ url: '/pages/register/register?need_return=true' })
            wx.switchTab({
              url: '/pages/profile/profile',
            })
          } 
          if (res.cancel && type==='tabPage'){
            wx.switchTab({
              url: '/pages/home/home',
            })
          }
        },
        
      })
    }
    return false
  }
}


module.exports = {
  getUID: getUID,
  setSTATUS: setSTATUS,
  getToken: getToken,
  getCookie: getCookie,
  autoLogin: autoLogin,
  login: login,
  logout: logout,
  isLogin: isLogin,
}
